home *** CD-ROM | disk | FTP | other *** search
- ORTSKURVEN-ZEICHNER V1.1
- ------------------------
- Dieses Programm soll all diejenigen entlasten, die Ortskurven zeichnen wollen/
- müssen, und diese Tätigkeit öde und langweilig finden. Um in den vollen Genuß
- des Programms zu kommen, sind 1MB RAM, ein monochromer Monitor (je größer desto
- besser) und evtl. ein 24-Nadel-Drucker (NEC P6,P6+, C.Itoh 610, OKI 393,...)
- notwendig. Ein arithmetischer Coprozessor ist besonders bei umfangreichen Funk-
- tionen sehr nützlich.
-
- Das Programm
- ------------
- Es zeichnet Ortskurven von beliebigen, in UPN-Notation eingegebenen komplexen
- Funktionen. Die Zeichnungen können in 4 verschiedenen Formaten ausgeführt
- werden: Fenster (Inhalt des größten darstellbaren Fensters), STAD (640x400,
- zum Nachbearbeiten mit Zeichenprogrammen), DIN A5 quer und DIN A4. Ein Pixel
- entspricht dabei 1/180 Zoll im Quadrat (24-Nadler...). Funktionen werden dabei
- immer in Abhängigkeit einer Variablen gezeichnet (x), es können aber vier Kon-
- stanten deklariert werden, so daß es auch möglich ist Funktionenscharen zu
- zeichnen.
-
- Das Menu
- --------
- Es gibt fünf Einträge in der Menuleiste:
-
- Desk - Programminfo und Accessories
- Ein-/Ausgabe - Funktion eingeben (spricht für sich)
- - Funktion speichern (Funktion wird als ASCII-Text gespeichert,
- den man auch manuell nachedieren kann)
- - Funktion laden (...)
- - Ausdruck (es wird der eingestellte Bereich des internen DIN-A4
- Speichers ausgedruckt - Achtung: es wird links ein
- Rand von 5/6 Zoll für Lochungen etc. gelassen)
- - STAD speichern (es wird der linke obere 640x400 Pixel große
- Teil des internen DIN-A4-Speichers im DOODLE-
- Format gespeichert - 400 Zeilen à 80 Bytes=32K)
- Parameter - Werte (hier können verschiedene Werte für die Funktion einge-
- stellt werden, genaueres später)
- - Fenster (begrenzt den Zeichenbereich auf den maximalen Inhalt
- des Fensters)
- - 640x400 (begrenzt den Zeichenbereich auf 640x400 Pixel)
- - 1440x1000 (begrenzt ... DIN A5 quer)
- - 1440x2000 (begrenzt ... DIN A4)
- - Rasterlinien (falls abgehakt, wird beim Zeichnen der Achsen
- ein Kästchenmuster mitgezeichnet - wichtig für's
- quantitative Auswerten der Zeichnung)
- Ortskurve - Achsen zeichen (zeichnet die Koordinatenachsen für den momentan
- eingestellten Real- und Imaginärbereich, muß
- immer vor der ersten Zeichnung angewählt werden
- hab' ich aber extra nicht automatisch gemacht,
- damit man mehrere Funktionen in ein Diagramm
- zeichnen kann.)
- - Wert ausrechnen (geht in den Taschenrechnermodus, mit dem man
- z.B. die Funktion testen kann. Dazu muß der
- x-Parameter eingegeben werden, der Funktions-
- wert wird dann in Re/Im-Schreibweise und polar
- ausgegeben.)
- - Automatik (startet den Zeichenvorgang und versucht dabei die
- Zeichenrichtung richtig zu wählen)
- - xmin->xmax... (eigene Wahl der Richtung, falls Automatik ver-
- sagt - Erklärung später)
- Beschriftung - Beschriften (hiermit kann man beliebige Texte in das Diagramm
- eintragen, Sonderzeichen können durch Anklicken
- derselben angewählt werden. Nicht wundern, wenn
- anstatt einem Pfeil in der Eingabezeile ein ATARI-
- Symbol erscheint->Überraschung ! Nach RETURN kann
- der Text mit der linken Maustaste im Fenster
- plaziert werden, die rechte Maustaste bricht ab.)
- - Ortskurve markieren (hiermit kann man kleine Marken an die
- Ortskurve antragen. Nach der Eingabe einer
- Zahl und Drücken von RETURN erscheint die
- Marke am Bildschirm. Falls der Platz ge-
- fällt, kann man die Marke mit SETZEN fix-
- ieren.)
- - Bezifferungsgerade (hiermit kann man eine Bezifferungsgerade,
- also eine Tangente an die Ortskurve in den
- Punkten ±∞ eintragen. Bedienung wie beim
- Markieren der Ortskurve.)
- - Bez.gerade markieren (hiermit kann man die Bezifferungsgerade
- markieren. Bedienung wie beim Markieren
- der Ortskurve.)
-
- Der Rest
- --------
-
- Falls jemand keine Ahnung von komplexen Zahlen hat, sollte er jetzt erst mal
- nachlesen was das ist !
-
- UPN:
- Ursprünglich fast in Vergessenheit geraden, wurde diese Möglichkeit Funktionen
- darzustellen von Hewlett Packard wieder salonfähig gemacht (man denke an die
- beliebten wissenschaftlichen Taschenrechner jener Firma). Der Vorteil liegt
- darin, daß zur Darstellung komplizierter Funktionen keinerlei Klammern benötigt
- werden. Das hat natürlich Vorteile für den Rechner, da er keine verschachtelten
- Klammern mehr zu interpretieren braucht, sondern nur noch eine Anweisung nach
- der anderen abzuarbeiten braucht. Dahingehend schaut die Funktionseingabe auch
- nicht wie bei anderen Programmen aus (sondern anfangs etwas verwirrend). Ein
- weiterer Gesichtspunkt ist die Verwendung des Stacks: stellen Sie sich vor, Sie
- wollen 1/(1+7) ausrechnen. In UPN nimmt man dazu die 1 schreibt sie auf einen
- Zettel und legt ihn als unterstes Element unseres Papierstapels hin. Nun
- schreibt man noch einen Zettel mit der 1, legt den auf den Stapel, und schließ-
- lich legt man noch einen Zettel mit der 7 darauf. Nun wird's interessant:
- Wir addieren die beiden oberen Zettel (also 1 und 7) und legen das Ergebnis (8)
- anstatt der beiden Zettel auf den Stack. Nun dividieren wir den zweitobersten
- Zettel durch den obersten (1/8) und legen das Ergebnis als neuen Zettel hin.
- Fertig ! Gut, das mag jetzt kompliziert klingen aber der Rechner kann die Sache
- mit den Zetteln viel besser als Sie, denn RAM kann man sehr schnell lesen und
- schreiben (Sie wären wahrscheinlich die ganze Zeit damit beschäftigt, alte Zet-
- tel dem Altpapierrecycling zuzuführen...).
- Die Dialogbox zur Funktionseingabe sieht auf den ersten Blick wie ein Filese-
- lektor - Ähnlichkeit nicht beabsichtigt. Man kann in der Funktion rauf- und
- runterfahren, Zeilen einfügen und löschen, die Syntax der Funktion prüfen lassen
- und die ganze Funktion löschen lassen.
- Erlaubte Funktionen:
- x,a,b,c,d,pi,123.456 - legt die jeweiligen Werte im Format n+j0 auf den Stack
- ^2,1/x,sqrt - quadriert, bildet den Kehrwert bzw. die Wurzel (Achtung !
- Dies sind alles komplexe Werte, d.h. für die Wurzel wird
- nur der erste Wert angegeben !)
- dup - dupliziert den obersten Stackeintrag
- x<>y - vertauscht die beiden obersten Stackeinträge
- +/- - wechselt das Vorzeichen des obersten Stackeintrags
- +,-,/,* - die Grundrechenarten
- complex - Bildet eine komplexe Zahl aus den beiden obersten Stack-
- einträgen. Der oberste wird dabei der Imaginärteil.
- polar - wie 'complex', aber in Polardarstellung. Der oberste
- Stackeintrag wird dabei der Winkel.
- betr - berechnet den Betrag der obersten Zahl und legt ihn als
- betr+j0 wieder ab.
- arg - berechnet das Argument in Radiant. Das Ergebnis wird wie
- bei betr als arg+j0 abgelegt.
-
- Werte:
- In Menu Werte kann man den angezeigten Bereich für Real- und Imaginärteil
- (REmin,REmax,IMmin,IMmax), den von x durchlaufenen Bereich (Xmin,Xmax) sowie
- die vier möglichen Konstanten deklarieren (a-d). Für alle Werte gilt dabei:
- -9999999.9999 < X < 9999999.9999. Zusätzlich kann man die 'Rasterzone' ein-
- stellen. Dazu muß noch ein Wort über den Zeichenalgorithmus des Programms ver-
- loren werden: Da Ortskurven oft für einen sehr großen Bereich gezeichnet werden
- (z.B. 0<x<∞) muß das Programm natürlich versuchen Stellen des Graphen, in denen
- nichts geschieht, möglichst schnell zu überwinden. Daher ändert das Programm
- laufend seine Zeichenschrittweite. Nun kann es aber passieren, daß die Schritt-
- weite so groß wird, daß interessante Bereiche des Graphen überlaufen werden. Die
- Zeichenautomatik versucht zwar dies zu verhindern, aber es kann trotzdem schon
- mal passieren. Für diesen Fall können Sie die Zeichenrichtung selbst bestimmen.
- Mit der Rasterzone können Sie außerdem einen Bereich (in Pixeln) um den Graphen
- definieren, in dem das Programm die Schrittweite bereits reduziert, falls die
- Funktionswerte sich dem 'heißen' Bereich nähern.
-
- Das Beispiel
- ------------
- Wie haben die Funktion 1/(1+jx^2) und möchten sie zeichnen:
- - wählen Sie Funktionseingabe an.
- - falls schon eine Funktion im Speicher ist, löschen Sie sie mit NEU.
- - nun geben Sie ein: 1 RETURN x RETURN complex RETURN 1/x RETURN
- - falls Ihnen erst jetzt auffällt, daß Sie das Quadrieren von x vergessen
- haben, klicken Sie complex an, drücken auf EINFÜGEN und schreiben in die
- neue Leerzeile ^2.
- - um sicher zu gehen, können Sie jetzt noch mit Check die Syntax testen. Dabei
- werden außerdem noch Leerzeilen aus der Funktion entfernt.
- - verlassen Sie die Funktionseingabe
- - nun könnten Sie den Zeichenbereich einstellen. Gehen Sie dazu in das Menu
- Werte. Dort stellen Sie am Besten 0<Re<1 und -1<I<0 ein.
- - lassen Sie die Achsen zeichnen
- - anklicken von Automatik sollte nun eine wunderschöne Ortskurve zeichnen
- - Fertig !
-
- Die Tips
- --------
- Da C normalerweise auch keine Ahnung hat, was komplexe Zahlen sind, mußte ich
- ihm zumindest ein paar Grundbegriffe beibringen. Dazu habe ich natürlich die
- einfachsten Algorithmen benutzt. Leider ist es nun aber so, daß für eine
- Addition die ReIm-Darstellung, für eine Division aber die Polardarstellung
- am einfachsten ist. Da die Umwandlung Zeit kostet (trigonometrische Funktionen)
- empfiehlt es sich, die Funktion so einzugeben, daß möglichst wenig Umwandlungen
- nötig sind !
-
- Der Schluß
- ----------
- Das Programm wurde in Turbo-C V1.1 entwickelt. Vielen Dank an Georg Dittié,
- dessen universelle Diagrammzeichenroutine aus c't 2/90 ich zum Zeichnen der
- Achsen verwendet habe. Vielen Dank auch an Hewlett Packard, von deren HP42 ich
- die UPN-Syntax abgekupfert habe.
- Das Programm ist PD, ...finanzielle Anerkennung...bla...blubber... Im Ernst -
- ich würde mich freuen, wenn jemand meine Arbeit zu würdigen weiß, und mir
- andere (brauchbare !) E-Technik-Software zusendet. Ich sende ihm dafür dann
- den Source-Code dieses Meisterwerks an C-Programmierung. Natürlich kann man
- mir auch schreiben, wenn man Fehler gefunden oder Vorschläge zu machen hat.
-
- Meine Adresse:
- Jörg Falkenberg
- Windsheimer Straße 53
- 8500 Nürnberg 60
-
- Ein Gruß an alle Informatiker, die immer noch glauben, daß sich Programme
- nur unter Zuhilfenahme von Struktogrammen etc. erstellen lassen...
-
- Nürnberg, 27.07.1990
-
-